package com.yuntai.pms.model.api.handler;


import com.yuntai.pms.model.dto.handler.HandlerQueryParam;
import com.yuntai.pms.model.dto.handler.MethodRegisterDto;
import com.yuntai.pms.model.entity.handler.GroupServerInfo;
import com.yuntai.pms.model.result.PageResult;
import com.yuntai.pms.model.vo.handler.MethodRegisterVo;

import java.util.Date;
import java.util.List;

/**
 * @ClassName: ServiceRegisterService
 * @Description: 服务注册服务
 * @author 杨训亮
 * @date 2017年6月15日 下午7:19:31
 */
public interface MethodRegisterService {

	/**
	 * 获取指定group，serverName，和checkStatus的绑定的缴费记录
	 * @param group 可以为空
	 * @param serverName 可以为空
	 * @param checkStatus 可以为空
	 * @return
	 */
	GroupServerInfo getGroupServerInfo(String group, String serverName, String checkStatus);

	/**
	 * 获取指定的group，serverName，status，以及startTime，endTime的查询记录
	 * @param group
	 * @param serverName
	 * @param checkStatus
	 * @param startTime
	 * @param endTime
     * @return
     */
	GroupServerInfo getGroupServerInfo(String group,String serverName,String checkStatus,String startTime,String endTime);

	/**获取指定group的全部handler
	 * @param group
	 * @return
	 */
	List<GroupServerInfo> getGroupInfo(String group);

	/**
	 * @Title: getAllEnabledMethod
	 * @Description: 查询所有有效的接口
	 * @return
	 */
	List<MethodRegisterVo> getAllEnabledMethod();
	
	/**
	 * 获取指定服务器绑定的全部handler
	 * @param serverName
	 * @return
	 */
	List<GroupServerInfo> getServerInfo(String  serverName);

	/**
	 * 获取状态为待审核的handler
	 * @param group
	 * @param serverName
	 * @return
	 */
	GroupServerInfo getGroupServerCheckMethods(String group,String serverName);

	/**
	 * 获取状态为Enabled的Handler
	 * @param group
	 * @param serverName
     * @return
     */
	GroupServerInfo getGroupServerEnabeldMethods(String group,String serverName);

	/**
	 * 获取状态为Dsiabled状态的Handler
	 * @param group
	 * @param serverName
	 * @return
	 */
	GroupServerInfo getGroupServerDisabledMethods(String group,String serverName);

	/**
	 * 保存注册
	 * 
	 * @author 杨训亮
	 * @date 2017年6月15日 下午7:22:47
	 * @param requests
	 * @return
	 */
	Boolean saveHandler(MethodRegisterDto... requests);

	/**
	 * 更新服务注册
	 * 
	 * @author 杨训亮
	 * @date 2017年6月15日 下午7:23:11
	 * @param request
	 * @return
	 */
	Boolean updateHandler(MethodRegisterDto... request);

	/**
	 * 删除服务注册
	 * 
	 * @author 杨训亮
	 * @date 2017年6月15日 下午7:23:33
	 * @param requests
	 * @return
	 */
	Boolean delHanlder(MethodRegisterDto... requests);

	/**
	 * 查询服务
	 * 
	 * @author 杨训亮
	 * @date 2017年6月15日 下午7:23:45
	 * @param request
	 * @param startCreateDate
	 * @param endUpdateTime
	 * @return
	 */
	List<MethodRegisterVo> queryHandlers(MethodRegisterDto request, Date startCreateDate, Date endUpdateTime);

	/**
	 * 查询单个服务
	 * 
	 * @author 杨训亮
	 * @date 2017年6月15日 下午7:23:56
	 * @param request
	 * @return
	 */
	MethodRegisterVo querySingleHandler(MethodRegisterDto request);

	/**
	 * @Title: searchPageDataByCondition
	 * @Description: 分页数据查询
	 * @param param
	 * @return PageResult
	 * @author caijianguo
	 */
	PageResult<MethodRegisterVo> searchPageDataByCondition(HandlerQueryParam param);


	Integer getCountsByDto(MethodRegisterDto dto);

}
